Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix 'MavenPluginUtils.getContainingPluginDescriptor' error processing #445

Conversation

vrubezhny
Copy link
Contributor

A different kind of exceptions may occur when tying to get a plugin descriptor and, if not caught and processed, may break the normal functionality

Jul 20, 2023 5:23:08 PM org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator validatePluginResolution
WARNING: Could not resolve plugin description
org.apache.maven.plugin.PluginDescriptorParsingException: Failed to parse plugin descriptor for org.eclipse.tycho:tycho-repository-plugin:5.0.0-SNAPSHOT (/home/jeremy/projects/eclipse/source/tycho/tycho-repository-plugin/pom.xml): zip END header not found
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.extractPluginDescriptor(DefaultMavenPluginManager.java:228)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.lambda$getPluginDescriptor$0(DefaultMavenPluginManager.java:182)
	at org.apache.maven.plugin.DefaultPluginDescriptorCache.lambda$get$0(DefaultPluginDescriptorCache.java:72)
	at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
	at org.apache.maven.plugin.DefaultPluginDescriptorCache.get(DefaultPluginDescriptorCache.java:70)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:176)
	at org.eclipse.lemminx.extensions.maven.utils.MavenPluginUtils.getContainingPluginDescriptor(MavenPluginUtils.java:192)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validatePluginResolution(PluginValidator.java:45)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validateGoal(PluginValidator.java:107)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.lambda$doDiagnostics$3(MavenDiagnosticParticipant.java:84)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1850)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.doDiagnostics(MavenDiagnosticParticipant.java:85)
	at org.eclipse.lemminx.services.XMLDiagnostics.doExtensionsDiagnostics(XMLDiagnostics.java:67)
	at org.eclipse.lemminx.services.XMLDiagnostics.doDiagnostics(XMLDiagnostics.java:49)
	at org.eclipse.lemminx.services.XMLLanguageService.doDiagnostics(XMLLanguageService.java:190)
	at org.eclipse.lemminx.services.XMLLanguageService.publishDiagnostics(XMLLanguageService.java:204)
	at org.eclipse.lemminx.XMLTextDocumentService.validate(XMLTextDocumentService.java:716)
	at org.eclipse.lemminx.XMLTextDocumentService.lambda$new$2(XMLTextDocumentService.java:207)
	at org.eclipse.lemminx.commons.ModelValidatorDelayer.lambda$validateWithDelay$0(ModelValidatorDelayer.java:69)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.zip.ZipException: zip END header not found
	at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1469)
	at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1477)
	at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1315)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1277)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:709)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:243)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:172)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:347)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:318)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:298)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.extractPluginDescriptor(DefaultMavenPluginManager.java:205)
	... 32 more

@vrubezhny vrubezhny force-pushed the fixMavenPluginUtils_getContainingPluginDescriptor_error_processing branch 2 times, most recently from 8d372c7 to 94b10ed Compare July 20, 2023 19:43
A different kind of exceptions may occur when trying to get a plugin descriptor and,
if not caught and corectly processed, may break the normal functionality

```
Jul 20, 2023 5:23:08 PM org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator validatePluginResolution
WARNING: Could not resolve plugin description
org.apache.maven.plugin.PluginDescriptorParsingException: Failed to parse plugin descriptor for org.eclipse.tycho:tycho-repository-plugin:5.0.0-SNAPSHOT (/home/jeremy/projects/eclipse/source/tycho/tycho-repository-plugin/pom.xml): zip END header not found
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.extractPluginDescriptor(DefaultMavenPluginManager.java:228)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.lambda$getPluginDescriptor$0(DefaultMavenPluginManager.java:182)
	at org.apache.maven.plugin.DefaultPluginDescriptorCache.lambda$get$0(DefaultPluginDescriptorCache.java:72)
	at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708)
	at org.apache.maven.plugin.DefaultPluginDescriptorCache.get(DefaultPluginDescriptorCache.java:70)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:176)
	at org.eclipse.lemminx.extensions.maven.utils.MavenPluginUtils.getContainingPluginDescriptor(MavenPluginUtils.java:192)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validatePluginResolution(PluginValidator.java:45)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validateGoal(PluginValidator.java:107)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.lambda$doDiagnostics$3(MavenDiagnosticParticipant.java:84)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1850)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.doDiagnostics(MavenDiagnosticParticipant.java:85)
	at org.eclipse.lemminx.services.XMLDiagnostics.doExtensionsDiagnostics(XMLDiagnostics.java:67)
	at org.eclipse.lemminx.services.XMLDiagnostics.doDiagnostics(XMLDiagnostics.java:49)
	at org.eclipse.lemminx.services.XMLLanguageService.doDiagnostics(XMLLanguageService.java:190)
	at org.eclipse.lemminx.services.XMLLanguageService.publishDiagnostics(XMLLanguageService.java:204)
	at org.eclipse.lemminx.XMLTextDocumentService.validate(XMLTextDocumentService.java:716)
	at org.eclipse.lemminx.XMLTextDocumentService.lambda$new$2(XMLTextDocumentService.java:207)
	at org.eclipse.lemminx.commons.ModelValidatorDelayer.lambda$validateWithDelay$0(ModelValidatorDelayer.java:69)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.zip.ZipException: zip END header not found
	at java.base/java.util.zip.ZipFile$Source.findEND(ZipFile.java:1469)
	at java.base/java.util.zip.ZipFile$Source.initCEN(ZipFile.java:1477)
	at java.base/java.util.zip.ZipFile$Source.<init>(ZipFile.java:1315)
	at java.base/java.util.zip.ZipFile$Source.get(ZipFile.java:1277)
	at java.base/java.util.zip.ZipFile$CleanableResource.<init>(ZipFile.java:709)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:243)
	at java.base/java.util.zip.ZipFile.<init>(ZipFile.java:172)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:347)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:318)
	at java.base/java.util.jar.JarFile.<init>(JarFile.java:298)
	at org.apache.maven.plugin.internal.DefaultMavenPluginManager.extractPluginDescriptor(DefaultMavenPluginManager.java:205)
	... 32 more
```
@vrubezhny vrubezhny force-pushed the fixMavenPluginUtils_getContainingPluginDescriptor_error_processing branch from 94b10ed to eccdf02 Compare July 20, 2023 20:21
@vrubezhny vrubezhny merged commit a97bd74 into eclipse:master Jul 20, 2023
2 checks passed
@rgrunber
Copy link
Contributor

I'm seeing this in the lemminx logs :

WARNING: Could not resolve plugin description
org.apache.maven.plugin.InvalidPluginDescriptorException: Unable to resolve org.apache.maven.plugins:maven-javadoc-plugin
	at org.eclipse.lemminx.extensions.maven.utils.MavenPluginUtils.getContainingPluginDescriptor(MavenPluginUtils.java:194)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validatePluginResolution(PluginValidator.java:45)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.PluginValidator.validateConfiguration(PluginValidator.java:75)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.lambda$doDiagnostics$3(MavenDiagnosticParticipant.java:84)
	at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1850)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
	at org.eclipse.lemminx.extensions.maven.participants.diagnostics.MavenDiagnosticParticipant.doDiagnostics(MavenDiagnosticParticipant.java:85)
	at org.eclipse.lemminx.services.XMLDiagnostics.doExtensionsDiagnostics(XMLDiagnostics.java:67)
	at org.eclipse.lemminx.services.XMLDiagnostics.doDiagnostics(XMLDiagnostics.java:49)
	at org.eclipse.lemminx.services.XMLLanguageService.doDiagnostics(XMLLanguageService.java:190)
	at org.eclipse.lemminx.services.XMLLanguageService.publishDiagnostics(XMLLanguageService.java:204)
	at org.eclipse.lemminx.XMLTextDocumentService.validate(XMLTextDocumentService.java:716)
	at org.eclipse.lemminx.XMLTextDocumentService.lambda$new$2(XMLTextDocumentService.java:207)
	at org.eclipse.lemminx.commons.ModelValidatorDelayer.lambda$validateWithDelay$0(ModelValidatorDelayer.java:69)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
	at java.base/java.lang.Thread.run(Thread.java:833)

Is there a way to suppress these if there's a good reason not to be able to resolve the plugin description ?

@vrubezhny
Copy link
Contributor Author

vrubezhny commented Jul 27, 2023

... Unable to resolve org.apache.maven.plugins:maven-javadoc-plugin

@rgrunber this maven-javadoc-plugin is defined in ci profile which doesn't seem to be active, so this warning is more or less correct.
As far as I remember there was a configuration preference page or something like this in M2E-Core letting users to select which profile IDs are to be treated as the active ones for validation and effective POM building... For Lemminx-Maven we don't have such preferences at the moment.

@rgrunber
Copy link
Contributor

This was for https://github.com/eclipse/lemminx/blob/main/pom.xml .

I'm able to trigger this just by right clicking on any part of the <groupid>, <artifactId>, <version> within <plugin>...</plugin> range for the maven-javadoc-plugin and clicking Go to definition. Also by hovering and hitting the ctrl key.

generate-p2 & verify-iplog are also not active but it doesn't happen for any of the plugins within there. Also if it's a valid warning, then the stacktrace should be hidden, as it just gives the impression something went wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants